#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 510, M = 100010;

int n1, n2, m;
int h[N], e[M], ne[M], idx;
int match[N]; // 配对情况
bool st[N];

bool find(int x) // 配对
{
    for (int i = h[x]; i != -1; i = ne[i]) // 枚举邻接表
    {
        int j = e[i]; // 配对目标
        if (!st[j])   // 未被预定
        {
            st[j] = true;
            if (match[j] == 0 || find(match[j])) // 没有配对目标或配对目标有新点
            {
                match[j] = x;
                return true; // 配对成功
            }
        }
    }
    return false; // 配对失败
}

int main()
{
    scanf("%d%d%d", &n1, &n2, &m);
    memset(h, -1, sizeof h);

    while (m--)
    {
        int a, b;
        scanf("%d%d", &a, &b);
        add(a, b);
    }

    int res = 0;
    for (int i = 1; i <= n1; i++) // 从n1开始找
    {
        memset(st, false, sizeof st);
        if (find(i)) // 配对
            res++;
    }
    printf("%d\n", res);
    return 0;
}